package conf

import (
	"gopkg.in/yaml.v2"
	"io/ioutil"
	"log"
)

const configFilePath string = "config-dev.yaml"

var configFile []byte

type AppConfig struct {
	App App `yaml:"app"`
}

type App struct {
	// 对应配置文件中的database-mysql的设置
	Database Database `yaml:"database"`
	// redis段
	Redis Redis `yaml:"redis"`
	// 
	FlushAllForTest bool `yaml:"flushAllForTest"`
}

type Database struct {
	// mysql
	Type string `yaml:"type"`
	// root
	User string `yaml:"user"`
	// root
	Password string `yaml:"password"`
	// seckill
	DbName string `yaml:"dbName"`
	// localhost:3306
	Address string `yaml:"address"`
	// 最大闲置链接
	MaxIdle int `yaml:"maxIdle"`
	// 最大打开链接数
	MaxOpen int `yaml:"maxOpen"`
}

type Redis struct {
	Address string `yaml:"address"`
	Network string `yaml:"network"`
	// 密码为空
	Password string `yaml:"password"`
	MaxIdle int `yaml:"maxIdle"`
	MaxActive int `yaml:"maxActive"`
	IdleTimeout int `yaml:"idleTimeout"`
}

func GetAppConfig() (appConfig AppConfig, err error)  {
	// 解析配置文件
	// func yaml.Unmarshal(in []byte, out interface{}) (err error)
	err = yaml.Unmarshal(configFile, &appConfig)
	return appConfig, err
}
// 默认执行，不需要特别调用
func init()  {
	var err error
	configFile, err = ioutil.ReadFile(configFilePath)
	if err != nil {
		log.Fatalf("yamlFile. Get err %v", err)
	}
}